package pl.kosmowska.ewelina.client.app;
import pl.kosmowska.ewelina.client.app.activity.places.BankStatementImportPlace;
import pl.kosmowska.ewelina.client.app.activity.places.CategoryPlace;
import pl.kosmowska.ewelina.client.app.activity.places.ChartPlace;
import pl.kosmowska.ewelina.client.app.activity.places.IncomeOutcomePlace.Tokenizer;
import pl.kosmowska.ewelina.client.app.activity.places.IncomePlace;
import pl.kosmowska.ewelina.client.app.activity.places.InvestmentEditPlace;
import pl.kosmowska.ewelina.client.app.activity.places.InvestmentPlace;
import pl.kosmowska.ewelina.client.app.activity.places.LoanEditPlace;
import pl.kosmowska.ewelina.client.app.activity.places.LoanPlace;
import pl.kosmowska.ewelina.client.app.activity.places.OutcomeEditPlace;
import pl.kosmowska.ewelina.client.app.activity.places.OutcomePlace;
import pl.kosmowska.ewelina.client.app.activity.places.SavingsEditPlace;
import pl.kosmowska.ewelina.client.app.activity.places.SavingsPlace;
import pl.kosmowska.ewelina.client.app.activity.places.SignInPlace;
import pl.kosmowska.ewelina.client.app.activity.places.StockEditPlace;
import pl.kosmowska.ewelina.client.app.activity.places.StockPlace;
import pl.kosmowska.ewelina.client.app.requestfactory.ApplicationRequestFactory;
import pl.kosmowska.ewelina.client.app.requestfactory.dto.UserDataProxy;
import pl.kosmowska.ewelina.client.views.BankStatementImportView;
import pl.kosmowska.ewelina.client.views.CategoryView;
import pl.kosmowska.ewelina.client.views.ChartView;
import pl.kosmowska.ewelina.client.views.IncomeOutcomeView;
import pl.kosmowska.ewelina.client.views.IncomeView;
import pl.kosmowska.ewelina.client.views.InvestmentEditView;
import pl.kosmowska.ewelina.client.views.InvestmentView;
import pl.kosmowska.ewelina.client.views.LoanEditView;
import pl.kosmowska.ewelina.client.views.LoanView;
import pl.kosmowska.ewelina.client.views.OutcomeEditView;
import pl.kosmowska.ewelina.client.views.OutcomeView;
import pl.kosmowska.ewelina.client.views.SavingsEditView;
import pl.kosmowska.ewelina.client.views.SavingsView;
import pl.kosmowska.ewelina.client.views.SignInView;
import pl.kosmowska.ewelina.client.views.StockEditView;
import pl.kosmowska.ewelina.client.views.StockView;
import pl.kosmowska.ewelina.client.views.impl.LeftSideViewImpl;
import pl.kosmowska.ewelina.client.views.widgets.AppLoadingView;

import com.google.gwt.activity.shared.ActivityManager;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.place.shared.PlaceController;


public interface ClientFactory {

	EventBus getEventBus();
	ApplicationRequestFactory getRequestFactory();
	PlaceController getPlaceController();
	void setUserData(UserDataProxy data);
	UserDataProxy getUserData();
	ActivityManager getActivityManager();
	Boolean getIsLoggedIn();


	//  used by the historyMapper
	SignInPlace.Tokenizer getSignInTokenizer();
	OutcomeEditPlace.Tokenizer getPanelTokenizer();
	CategoryPlace.Tokenizer getCategoryEditTokenizer();
	ChartPlace.Tokenizer getChartTokenizer();
	BankStatementImportPlace.Tokenizer getBankStatementImportTokenizer();
	Tokenizer getIncomeOutcomeTokenizer();
	IncomePlace.Tokenizer getIncomeTokenizer();
	InvestmentEditPlace.Tokenizer getInvestmentEditTokenizer();
	InvestmentPlace.Tokenizer getInvestmentTokenizer();
	LoanEditPlace.Tokenizer getLoanEditTokenizer();
	LoanPlace.Tokenizer getLoanTokenizer();
	SavingsEditPlace.Tokenizer getSavingsEditTokenizer();
	SavingsPlace.Tokenizer getSavingsTokenizer();
	StockEditPlace.Tokenizer getStockEditTokenizer();
	StockPlace.Tokenizer getStockTokenizer();
	OutcomePlace.Tokenizer getOutcomeTokenizer();


	//views
	LeftSideViewImpl getLeftSide();
	BankStatementImportView getBankStatementImportView();
	ChartView getChartView();
	OutcomeView getOutcomeView();
	IncomeView getIncomeView();
	IncomeOutcomeView getIncomeOutcomeView();
	LoanView getLoanView();
	InvestmentView getInvestmentView();
	SavingsView getSavingsView();
	StockView getStockView();
	CategoryView getCategoryView();
	
	SignInView getSignInView();
	OutcomeEditView getOutcomeEditView();
	InvestmentEditView getInvestmentEditView();
	LoanEditView getLoanEditView();
	SavingsEditView getSavingsEditView();
	StockEditView getStockEditView();
	AppLoadingView getAppLoadingView();




}
